package com.study.animationstudy.ui

import android.graphics.PorterDuff
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.AdapterView.OnItemSelectedListener
import android.widget.ArrayAdapter
import com.study.animationstudy.R
import com.study.animationstudy.base.BaseActivity
import com.study.animationstudy.databinding.ActivityDrawLayerBinding

class DrawLayerActivity : BaseActivity<ActivityDrawLayerBinding>() {

    private val descArray = arrayOf("只显示轮廓", "SRC 只显示上层图形", "DST 只显示下层图形",
        "SRC_OVER 重叠部分由上层遮盖下层", "DST_OVER 重叠部分由下层遮盖上层",
        "SRC_IN 只显示重叠部分的上层图形", "DST_IN 只显示重叠部分的下层图形",
        "SRC_OUT 只显示上层图形的未重叠部分", "DST_OUT 只显示下层图形的未重叠部分",
        "SRC_ATOP 只显示上层图形区域，但重叠部分显示下层图形", "DST_ATOP 只显示下层图形区域，但重叠部分显示上层图形",
        "XOR 不显示重叠部分，其余部分正常显示", "DARKEN 重叠部分按颜料混合方式加深，其余部分正常显示",
        "LIGHTEN 重叠部分按光照重合方式加亮，其余部分正常显示", "MULTIPLY 只显示重叠部分，且重叠部分的颜色混合加深",
        "SCREEN 过滤重叠部分的深色，其余部分正常显示")

    private val modeArray = arrayOf(PorterDuff.Mode.CLEAR, PorterDuff.Mode.SRC, PorterDuff.Mode.DST,
        PorterDuff.Mode.SRC_OVER, PorterDuff.Mode.DST_OVER,
        PorterDuff.Mode.SRC_IN, PorterDuff.Mode.DST_IN,
        PorterDuff.Mode.SRC_OUT, PorterDuff.Mode.DST_OUT,
        PorterDuff.Mode.SRC_ATOP, PorterDuff.Mode.DST_ATOP,
        PorterDuff.Mode.XOR, PorterDuff.Mode.DARKEN,
        PorterDuff.Mode.LIGHTEN, PorterDuff.Mode.MULTIPLY,
        PorterDuff.Mode.SCREEN)

    override fun ActivityDrawLayerBinding.initBinding() {
        initLayerSpinner()
    }

    private fun initLayerSpinner(){
        val modeAdapter = ArrayAdapter(this,R.layout.item_select,descArray)
        mBinding.spMode.apply {
            prompt = "请选择绘图层次类型"
            adapter = modeAdapter
            onItemSelectedListener = object :OnItemSelectedListener{
                override fun onItemSelected(
                    parent: AdapterView<*>?,
                    view: View?,
                    position: Int,
                    id: Long
                ) {
                    if (position == 0){
                        // 只显示线条轮廓
                        mBinding.lvMode.setOnlyLine()
                    }else {
                        // 设置层次视图的绘图模式
                        mBinding.lvMode.setMode(modeArray[position])
                    }
                }
                override fun onNothingSelected(parent: AdapterView<*>?) {}
            }
        }
    }

}